#include "vtor_menu.h"

#ifdef __DEMO_PROJECT__
// 添加需要的头文件
//#include "xxx.h"
#include "vtor_printf.h"


// 添加需要的外部变量或成员


// 内部变量和成员
VtorMenu VtorMenu_demoArray[] = {
{"VtorMenu", 0, VtorMenuLayer0},
	{"menu1", 1, VtorMenuLayer1},
		{"menu11", 12, VtorMenuLayer2},
	{"menu2", 2, VtorMenuLayer1},
		{"menu21", 21, VtorMenuLayer2},
		{"menu22", 22, VtorMenuLayer2},
	{"about", 20240513, VtorMenuLayer1},
	{"", 0}
};

VtorMenu* rootMenu			= NULL;
VtorMenu* menu1			= NULL;
VtorMenu* menu11			= NULL;
VtorMenu* menu2			= NULL;
VtorMenu* menu21			= NULL;
VtorMenu* menu22			= NULL;
VtorMenu* aboutMenu			= NULL;

// 根据显示平台实现自定义绘制函数
void VtorMenu_DisplaySingleMenu(uint8_t itemIdx, VtorMenu* menu)
{
	uint8_t menuDisplayBuffer[50];
	VtorSprintf(menuDisplayBuffer, 50, " %s:%d\r\n", menu->menuName, menu->menuValue);
	
	if (VtorMenu_curMenu == menu)
	{
		// 如果是当前选择项 前面加上小标识，并 反色显示（这里仅用oled进行演示）
		//pOledPaint->mode = OLED_PAINT_MODE_INVERT;
		menuDisplayBuffer[0] = '>';
		if(1 == VtorMenu_changeValueFlag)
		{
			menuDisplayBuffer[0] = '+';
		}
	}
	// 使用oled当作屏幕，目前最多能显示8个项
	
	VtorChanPrintf(5, menuDisplayBuffer);
	//OLED_ShowString(0, itemIdx * 8, menuDisplayBuffer);
	//pOledPaint->mode = OLED_PAINT_MODE_NORMAL;
}


void VtorMenu_EnterCallback(VtorMenu* menu)
{
	
}

void VtorMenu_ClickHandler(VtorMenu* menu)
{
	if (menu1 == menu)
	{
		//Led1_Toogle();
	}
}

// 菜单预处理，用于操作之前，主要是为了给菜单项进行赋值，方便后面显示（可为空）
void VtorMenu_PreProcess()
{
	//VtorMenu_rootMenu->menuValue = HAL_GetTick(); // HAL库获取运行时间（毫秒）
}

// 菜单再处理，用于操作之后，主要是为了将菜单项值赋值给变量，便于实际操控（可为空）
void VtorMenu_ReProcess()
{

}

void VtorMenu_Init()
{
	unsigned char menuIdx = 0;
	rootMenu		= &VtorMenu_demoArray[menuIdx++];
	menu1			= &VtorMenu_demoArray[menuIdx++];
	menu11			= &VtorMenu_demoArray[menuIdx++];
	menu2			= &VtorMenu_demoArray[menuIdx++];
	menu21			= &VtorMenu_demoArray[menuIdx++];
	menu22			= &VtorMenu_demoArray[menuIdx++];
	aboutMenu		= &VtorMenu_demoArray[menuIdx++];


//	// 构建菜单方案1：写好每个一的对应关系
	VtorMenu_Relate(rootMenu,rootMenu);
	VtorMenu_Relate(rootMenu,menu1);
		VtorMenu_Relate(menu1,menu11);
	VtorMenu_Relate(rootMenu,menu2);
		VtorMenu_Relate(menu2,menu21);
		VtorMenu_Relate(menu2,menu22);
	VtorMenu_Relate(rootMenu,aboutMenu);
	
	// 构建菜单树方案2：使用父指针当作层级，自动构建，更便捷
//	VtorMenu_RelateByParentValue(rootMenu);
	
	// 调整根菜单指针指向
	// 调整当前菜单指针指向
	VtorMenu_rootMenu = rootMenu;
	VtorMenu_curMenu = VtorMenu_rootMenu;
}

#endif
